package com.base.common.edu.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Base64;

/**
 * @author Maple.Chen
 * @date 2020年8月28日
 * @description <p>Base64工具类</p>
 */
public class Base64Util {

	/*
	 * 加密字符串
	 */
	public static String encodeString(String str) {
        byte[] bytes = str.getBytes();
        String encoded = Base64.getEncoder().encodeToString(bytes);
        return encoded;
    }

	/*
	 * 解密字符串
	 */
	public static String decodeString(String str) {
		//Base64 解密
        byte[] decodedStr = Base64.getDecoder().decode(str);
        String decode = new String(decodedStr);
        return decode;
	}
	
	/*
	 * 邮件中的HTML使用的是旧版的HTML规范，若邮件模板内嵌图片，需要将图片Base64加密后写在正文中
	 * Base加密图片
	 */
	public static String encodeImage(File file) {
		InputStream in = null;
		byte[] data = null;
		try {
			in = new FileInputStream(file);
			data = new byte[in.available()];
			in.read(data);
			in.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
        String encoded = Base64.getEncoder().encodeToString(data);
        return encoded;
    }
	
	/*
	 * 解密图片
	 */
	public static boolean decodeImage(String str, String path) {
		if (str == null) // 图像数据为空,直接终止程序
			return false;
		try {
			byte[] binaryData = Base64.getDecoder().decode(str);
			File f = new File(path);
			OutputStream out = new FileOutputStream(f);
			out.write(binaryData);
			out.flush();
			out.close();
			return true;
		} catch (Exception e) {
			return false;
		}
	}
	
}
